package br.edu.fucapi.posgraduacao.poo2.sgr.model;

import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

/**
 * @class Avaliacao.java
 * @author Fabio Oliveira
 * @date 11/01/2013
 * @brief Classe utilizada para persistência das Avaliações.
 */

@Entity
@Table(name = "ATIVIDADE")
@SequenceGenerator(allocationSize = 1, name = "SEQ_ATIVIDADE", sequenceName = "SEQ_ATIVIDADE")
public class Atividade {
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "SEQ_ATIVIDADE")
	@Column(name = "id_atividade")
	private Integer idProjeto;
	
	@Column(name="nome_atividade", length = 100, nullable = true, unique=true, insertable = true, updatable = true)
	private String nomeProjeto;	
	
	@Column(name="descricao", length = 100, nullable = true, unique=false, insertable = true, updatable = true)
	private String descricao;

	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "PROJETO_ATIVIDADE", joinColumns = @JoinColumn(name = "id_atividade"),
	inverseJoinColumns = @JoinColumn(name = "id_projeto"))
	private List<Projeto> listaProjetos;
	
	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "USUARIO_ATIVIDADE", joinColumns = @JoinColumn(name = "id_atividade"),
	inverseJoinColumns = @JoinColumn(name = "id_usuario"))
	private List<Usuario> listaUsuarios;
	
	@ManyToOne
	@JoinColumn(name="id_alocacao")
	private Alocacao alocacao;

	public Integer getIdProjeto() {
		return idProjeto;
	}
	public void setIdProjeto(final Integer idProjeto) {
		this.idProjeto = idProjeto;
	}
	public String getNomeProjeto() {
		return nomeProjeto;
	}
	public void setNomeProjeto(final String nomeProjeto) {
		this.nomeProjeto = nomeProjeto;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(final String descricao) {
		this.descricao = descricao;
	}
	public List<Projeto> getListaProjetos() {
		return listaProjetos;
	}
	public void setListaProjetos(final List<Projeto> listaProjetos) {
		this.listaProjetos = listaProjetos;
	}
	public Alocacao getAlocacao() {
		return alocacao;
	}
	public void setAlocacao(final Alocacao alocacao) {
		this.alocacao = alocacao;
	}
	public List<Usuario> getListaUsuarios() {
		return listaUsuarios;
	}
	public void setListaUsuarios(final List<Usuario> listaUsuarios) {
		this.listaUsuarios = listaUsuarios;
	}	
}
